package cn.hchaojie.javase.day11;

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;

import org.junit.Test;

/**
 * 
	is 2
	the 3
	teach 1

	// 读文件内容 => string
	// 解析内容 String.split
	// String[] words

	// the -> HashMap   单词, count

	// 遍历map集合，找出value最大的entry,

 * @author hchaojie
 *
 */
public class WordCounter {
	@Test
	public void test() throws IOException {
		List<String> lines = Files.readAllLines(Paths.get("data/sentence.txt"));
		
		Map<String, Integer> stat = new HashMap<>();
		
		for (String line : lines) {
			// 得到了每一行里面的所有单词
			String[] split = line.split("[,. ()&]");		// []表示分隔符是,.()中的任意一个。正则表达式语法
			
			for (String word : split) {
				if (word.length() == 0) {
					continue;
				}
				
				// 统一转成小写进行统计
				word = word.toLowerCase();

				if (stat.containsKey(word)) {
					// 如何单词在map里面已经有了，就把计数取出来，加一，再放进去
					// int count = stat.get(word);
					// stat.put(word, count + 1);
					stat.put(word, stat.get(word) + 1);
				} else {
					// 如何当前单词在map里面没有 word -> 1
					stat.put(word, 1);
				}
			}
		}
		
		
		// 找出出现次数最多的单词
		Entry<String, Integer> max = null;
		for(Entry<String, Integer> entry : stat.entrySet()) {
			// max.getValue() entry.getValue() max = entry
//			if (max == null) {
//				max = entry;
//			} else if (max.getValue() < entry.getValue()) {
//				max = entry;
//			}
			
			if (max == null || max.getValue() < entry.getValue()) {
				max = entry;
			}
		}
		
		System.out.println(max.getKey() + " " + max.getValue());
	}
}
